package com.learn.finished;

import java.util.Arrays;

/**
 * 给你一个整数数组 nums ，其中总是存在 唯一的 一个最大整数 。
 * <p>
 * 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是，则返回 最大元素的下标 ，否则返回 -1 。
 */
public class num_747 {
    public static void main(String[] args) {
        int[] arr = { 1};
//        System.out.println(dominantIndex(arr));
        System.out.println(dominantIndex1(arr));
    }

    public static int dominantIndex(int[] nums) {
        int index = 0;
        int len = nums.length;
        //只有一个，返回0
        if (len == 1) {
            return 0;
        }
        //先找出最大的值

        int[] clone = nums.clone();
        Arrays.sort(clone);
        int max = clone[len - 1];
        //若最大值不符合要求，返回-1
        if (clone[len - 2] != 0 && max / clone[len - 2] < 2) {
            return -1;
        }
        for (int i = 0; i < nums.length; i++) {
            while (max == nums[i]) {
                return i;
            }
        }
        return index;
    }

    public static int dominantIndex1(int[] nums) {
        int max = 0;
        //如果数组只有一个数值的话，直接输出max值
        int index = 0;
        //遍历一次
        for (int i = 0; i < nums.length; i++) {
            //取得对应数值，如果只有数组中只有一个数值，则不进入下一层if的最大值循环，因为没有任何一方大于任何一方
            int num = nums[i];
            //如果大于“max”,则对他们两进行替换
            if (num > max) {
                max = num;
                //同时取得该数值的索引值
                index = i;
            }
        }
        //在进行一次遍历
        for (int i = 0; i < nums.length; i++) {
            //略过本来自己的索引
            if (i == index) continue;
            //从数组中取值
            int num = nums[i];
            //判断该值*2后是否能大于max
            if (num * 2 > max) return -1;
        }
        return index;

    }
}
